#include "Camino.h"

Camino::Camino( string idOrigen, string idDestino ){
	camino.resize( 2 );
	izquierdo = 0;
	derecho = 1;
	camino.at( izquierdo ) = idOrigen;
	camino.at( derecho ) = idDestino;
}

void Camino::agregarIzquierdo( string idPersona, string idPelicula ){
	camino.resize( camino.size() + 2 );
	for (int i = camino.size() - 1; i >= (derecho+2); i-- )
		camino.at(i) = camino.at(i-2);

	camino.at(derecho) = idPersona;
	camino.at(derecho+1) = idPelicula;

	derecho += 2;
	izquierdo += 2;
}


void Camino::agregarDerecho( string idPersona, string idPelicula ){
	camino.resize( camino.size() + 2 );
	for (int i = camino.size() - 1; i >= (derecho+2); i-- )
		camino.at(i) = camino.at(i-2);

	camino.at(derecho) = idPersona;
	camino.at(derecho+1) = idPelicula;
}

void Camino::cerrarCamino( string idPelicula ){
	camino.resize( camino.size() + 1 );
	for (int i = camino.size() - 1; i >= (derecho+1); i-- )
		camino.at(i) = camino.at(i-1);

	camino.at(derecho) = idPelicula;
}

void Camino::imprimir(){
	vector<string> v;
	vector<Persona*> personas( camino.size()/2 + 1 );
	for ( int i = 0; i < personas.size(); i++ ){
		personas.at(i) = new Persona( camino.at( 2*i ), v );
	}

	vector<Pelicula*> peliculas( camino.size()/2 );
	for ( int i = 0; i < peliculas.size(); i++ ){
		peliculas.at(i) = new Pelicula( camino.at( 2*i + 1 ), v );
	}

	for( int i = 0; i < personas.size()-1; i++ ){
		cout << personas.at(i)->getNombre() << " trabajó con ";
		cout << personas.at(i+1)->getNombre() << " en ";
		cout << peliculas.at(i) << endl;
	}

	cout << endl << "Grados de Separación: " << peliculas.size() << endl;
}
